// JavaScript Document var speedForStill = [4,10],mousePos = {x:0,y:0}//,geocoder = new google.maps.Geocoder();//google 解析地址的对象 geocoder = new GClientGeocoder(); //调用googleAPI进行地址解析 function parseAddress (weidu,jingdu,arr,name){ if(document.getElementById(arr)!=null){ geocoder.geocode({"address":weidu+","+jingdu}, function(results,status) { _str = " "; if (status == google.maps.GeocoderStatus.OK) { _str = name +","+lg.p+":" + results[0].formatted_address; }else{ _str = lg.isGetting; } document.getElementById(arr).innerHTML = _str; arr.setAttribute('title', results[0].formatted_address); }); } } //通过偏移角度和速度计算方向 function getHangXiang(dusu, sudu){ if(sudu < 0||dusu=="") return "......"; var z = 5,fz = 10,p = 30; var hangxiang = lg.hangxiang; var qujian1 = [ z, fz, fz, p, 90 - p, 90 - z, 90 - fz, 90 + fz, 90 + p,180 - p, 180 - z, 180 - fz, 180 + fz, 180 + p, 270 - p, 270 - z,270 - fz, 270 + fz, 270 + p, 360 - p ]; var qujian2 = [ 360 - z, 360 - fz, p, 90 - p, 90 - fz, 90 + z, 90 + fz,90 + p, 180 - p, 180 - fz, 180 + z, 180 + fz, 180 + p, 270 - p,270 - fz, 270 + z, 270 + fz, 270 + p, 360 - p, 360 - fz ]; for ( var i = 0; i < qujian1.length; i++) { if (i == 0 || i == 1) { if (qujian2[i] <= dusu || dusu <= qujian1[i]) return hangxiang[i]; } else { if (qujian1[i] <= dusu && dusu <= qujian2[i]) return hangxiang[i]; } } return dusu; } //把秒转化为基本的日期格式 function exchangeTime(msecond) { var dd,hh,mm,ss;//天、时、分、秒 dd = Math.round(msecond / 86400 + 0.5) - 1; hh = Math.round((msecond - dd * 86400) / 3600 + 0.5) - 1; mm = Math.round((msecond - dd * 86400 - hh * 3600) / 60 + 0.5) - 1; ss = Math.round(msecond - dd * 86400 - hh * 3600 - mm * 60); var strtip = ""; if (dd > 0) strtip = strtip + dd + lg.d; if (hh > 0) strtip = strtip + hh + lg.h; if (mm > 0){ strtip = strtip + mm + lg.m; if(dd > 0) return strtip; } if (ss > 0) strtip = strtip + ss + lg.s; return strtip; } //获取俩个时间的时间差 function getTimeDiff(serverTime, objTime){ var timeDiff = (new Date((serverTime.split("."))[0].replace(/-/g, "/")) - new Date((objTime.split("."))[0].replace(/-/g, "/"))) / 1000; if(timeDiff < 0) timeDiff = 1; return timeDiff; } //根据经纬度的距离获取地图的缩放级 function getRoom(diff){ var room = new Array(0, 1, 2, 3, 4, 5, 6,7,8, 9, 10, 11, 12, 13, 14); var diffArr = new Array(360,180,90,45,22,11,5,2.5,1.25,0.6,0.3,0.15,0.07,0.03,0); for(var i = 0; i < diffArr.length; i ++){ if((diff - diffArr[i]) >= 0){ return room[i]; } } return 14; } //更新鼠标位置 function mouseCoords(ev){ ev= ev || window.event; if(ev.pageX || ev.pageY){ mousePos = {x:ev.pageX+10, y:ev.pageY+10}; } mousePos = { x:ev.clientX + document.documentElement.scrollLeft - document.body.clientLeft+10, y:ev.clientY + document.documentElement.scrollTop - document.body.clientTop+10 }; } function getStatic(datetime,servertime,sys_time,heart_time){//判断是否静止 stopover_time = getTimeDiff(servertime, sys_time); var heart_time = getTimeDiff(servertime, heart_time); var dingwei_time = getTimeDiff(servertime, sys_time); if(dingwei_time < heart_time)heart_time = dingwei_time; return [heart_time,stopover_time]; } //单击设置marker在地图中心,缩放级别放 function dblclickSetRoomCenter(weidu,jingdu,map){ var _zoom = map.getZoom(); if(_zoom<11){ map.setCenter(new google.maps.LatLng(Number(weidu), Number(jingdu))); map.setZoom(11); }else if(_zoom>=11&&_zoom<=18){ map.setCenter(new google.maps.LatLng(Number(weidu), Number(jingdu))); map.setZoom(_zoom+2); }else{ alert(lg.zoomMax); } } function getCenterPoint(maxJ,minJ,maxW,minW){//通过经纬度获取中心位置和缩放级别 if(maxJ==minJ&&maxW==minW)return [maxJ,maxW,0]; var diff = maxJ - minJ; if(diff < (maxW - minW))diff = maxW - minW; diff = parseInt(10000 * diff)/10000; var centerJ = minJ*1000000+1000000*(maxJ - minJ)/2; var centerW = minW*1000000+1000000*(maxW - minW)/2; return [centerJ/1000000,centerW/1000000,diff]; } //获取状态和速度 function status_(heart_stime,speed,stopover_time,endServerTimeCount){//状态和状态标识 endServerTimeCount表示服务器时间和到期时间的差返回的秒数 //endServerTimeCount = -60*60*24*31; var speed = Number(speed); var _arr = ["white",lg.srun1,0,false]; var oneDay = 60*60*24;//一天的秒数 var servenDays = -(60*60*24*7);//一个礼拜的秒数 var offlineSeconds = 900;//设备离线的时长 //var month = 60*60*24*30;//一个月的秒数 if(endServerTimeCount>(oneDay*7)){//已经过期7天以上 不显示速度,并且地图上也不显示 return ["white",lg.arrear,0,false]; } var statusWord = "-1"; if(endServerTimeCount<=(oneDay*7)&&endServerTimeCount>0){//已经过期0-7天的设备 不显示速度,但地图上可以显示 var days = (endServerTimeCount/oneDay)+lg.d; statusWord = lg.serviceEnd[0]+days; } if(endServerTimeCount<=0&&endServerTimeCount>servenDays){//表示7天内将过期 var days = Math.abs(endServerTimeCount)/oneDay; statusWord = days+lg.serviceEnd[2]; if(endServerTimeCount==0){ statusWord = lg.serviceEnd[3]; } } if(speed==-9&&heart_stime > offlineSeconds){ if(statusWord == "-1") return ["white",lg.srun0,speed,false]; else return ["white",statusWord,speed,false]; } if(speed==-9&&heart_stime <=offlineSeconds){ if(statusWord == "-1") return ["gray",lg.srun2,0,true]; else return ["gray",statusWord,0,true]; } if(speed<0||heart_stime > offlineSeconds){ if(statusWord == "-1") return ["white",lg.srun1,0,false]; else return ["white",statusWord,0,false]; } if((speed>=0&&speed=speedForStill[1]&&speed<=80){ if(statusWord == "-1") return ["green",lg.srun3,speed,true]; else return ["green",statusWord,speed,true]; } if(speed>80&&speed<=120){ if(statusWord == "-1") return ["yellow",lg.srun4,speed,true]; else return ["yellow",statusWord,speed,true]; } if(speed>120){ if(statusWord == "-1") return ["red",lg.srun5,speed,true]; else return ["red",lstatusWord,speed,true]; } return _arr; } function direction(speed,iconType,hangxiang){//方向标识 var direction = "west"; if(iconType.charAt(0)=="2"){ var speed = Number(speed); var hangxiang = Number(hangxiang); if(speed==-1){ direction = "west"; }else{ if(hangxiang<=45||hangxiang>315){//北向 direction = "north"; }else if(hangxiang>45&&hangxiang<=135){//东向 direction = "east"; }else if(hangxiang>135&&hangxiang<=225){//南向 direction = "south"; }else if(hangxiang>225&&hangxiang<=315){//西向 direction = "west"; } } } return direction; } //通过图片类型 状态 方向 拼成marker图片 function getIconURL(iconType,status,hangxiang){ var imgURL = "green_01.gif"; if(iconType.charAt(0)=="2"){ imgURL = status+"_"+hangxiang+"_"+iconType+".gif"; }else{ imgURL = status+"_"+iconType+".gif"; } return imgURL; } //解析ACC状态信息 4006640001 function getAccStatus(val, p, record){//type,val if((typeof record)=="undefined"||record.data["product_type"]=="GT06"){ var stem = parseInt(val.substr(0,2),16); var tem = stem.toString(2); if(tem.length<2||tem.substr(tem.length-2,1)=="0"){return lg.off} else {return lg.on} }else{ return "..." } } //加载JS function loadFile(arr,scriptId,callback){//需要加载的JS数组 //var oHead = document.getElementsByTagName('HEAD').item(0); if(isArray(arr)){ for(var i=0;i-1){ _C = "&callback="+cb; }else{ _C = "?callback="+cb; } } oScript.src=name+_C; oHead.appendChild(oScript); } //删除一个JS文件 function deleteFile(id){ var script = document.getElementById(id); if(script!=null){ script.parentNode.removeChild(script); } } //判断v的类型是否为数组 function isArray(v){ var toString = Object.prototype.toString; return toString.apply(v) === '[object Array]'; } function distance(lat1,lon1,lat2,lon2,len) {//获取地图上俩个点之间的距离 var R = 6378.137; // km (change this constant to get miles) var dLat = (lat2-lat1) * Math.PI / 180; var dLon = (lon2-lon1) * Math.PI / 180; var a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.cos(lat1 * Math.PI / 180 ) * Math.cos(lat2 * Math.PI / 180 ) * Math.sin(dLon/2) * Math.sin(dLon/2); var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); var d = R * c; return d+len; } function formatKm2M(v){//把KM转化成需要是数据格式 if (v>1) return Math.round(v*1000)/1000+lg.km; else if (v<=1) return Math.round(v*1000)+lg.mi; } //解析GT06的数据定位状态 function parseGt06Staust(val){ var val = val+""; if((typeof val) == "undefined")return lg.sdw0; var stem = parseInt(val.substr(0,2),16); var tem = stem.toString(2); if(tem.length<7||(tem.length ==7&&tem.substr(0,1)=="0")||(tem.length ==8&&tem.substr(1,1)=="0"))return lg.sdw0; else return lg.sdw1; } function addMAPabc(map){//添加MAPabc的瓦片 参数为地图对象 var _tileSize = new google.maps.Size(256,256); var getTileUrl = function(tile,zoom){ return "http://emap" + ((tile.x + tile.y) % 4) + ".mapabc.com/mapabc/maptile?v=w2.99&x=" + tile.x + "&y=" + tile.y + "&zoom=" + (17-zoom); }; var imageMapType = new google.maps.ImageMapType({alt:"MAPabc",isPng:true,maxZoom:18,minZoom:1,name:"MAPabc",tileSize: new google.maps.Size(256, 256),opacity:1.0,getTileUrl:getTileUrl}); map.mapTypes.set('MAPabc',imageMapType); } function addMarkerLayersTile(map){//为普通地图和混合地图添加地标瓦片信息 var label = new google.maps.ImageMapType({ getTileUrl: function(tile, zoom) { var arr = ["mt0","mt1","mt2","mt3"]; var _u = arr[Math.floor(Math.random()*arr.length)]; return "http://"+_u+".google.com/vt/imgtp=png32&lyrs=h@140&hl=zh-CN&gl=cn&x="+(tile.x)+"&y="+(tile.y)+"&z="+zoom+"&s=Galil"; }, tileSize: new google.maps.Size(256, 256), isPng:true }); map.overlayMapTypes.insertAt(0, label); } function addMAPType(map,id,text){//添加google的瓦片 参数为地图对象 var _tileSize = new google.maps.Size(256, 256); var getTileUrl = function(tile,zoom){ var arr = ["mt0","mt1","mt2","mt3"]; var _u = arr[Math.floor(Math.random()*arr.length)]; return "http://"+_u+".google.com/vt/lyrs=s@76&gl=cn&x=" + tile.x + "&y=" + tile.y + "&z=" + zoom; }; var imageMapType = new google.maps.ImageMapType({alt:text,isPng:true,maxZoom:20,name:text,tileSize: new google.maps.Size(256, 256),opacity:1.0,getTileUrl:getTileUrl}); map.mapTypes.set(id,imageMapType); } function getInterceptedStr(sSource, iLen) { if (sSource.replace(/[^\x00-\xff]/g, "xx").length <= iLen) { return sSource; } var str = ""; var l = 0; var schar; for (var i = 0; schar = sSource.charAt(i); i++) { str += schar; l += (schar.match(/[^\x00-\xff]/) != null ? 2: 1); if (l >= iLen) { str += "...."; break; } } return str; }